//import java.io.*;
//import java.util.Scanner;
//
//
//public class Main {
//    static int n, count;
//    static int[][] st;
//
//    public static void main(String[] args) throws IOException {
//        n = new Scanner(System.in).nextInt();
//        st = new int[n + 1][n + 1];
//        count = 0;
//        dfs(1);
//        System.out.println(count);
//    }
//
//    public static void print() {
//        for (int i = 1; i <= n; i++) {
//            for (int j = 1; j <= n; j++) {
//                if (st[i][j] == 1) {
//                    System.out.print(j + " ");
//                }
//            }
//        }
//        System.out.println();
//
//    }
//
//    public static boolean check(int x, int y) {
//        //检查行
//        for (int i = 1; i <= n; i++) {
//            if (st[x][i] == 1) {
//                return false;
//            }
//        }
//        //检查列
//        for (int i = 1; i <= n; i++) {
//            if (st[i][y] == 1) {
//                return false;
//            }
//        }
//        //检查左斜线
//        for (int i = 1; x - i >= 1 && y - i >= 1; i++) {
//            if (st[x - i][y - i] == 1) {
//                return false;
//            }
//        }
//        //检查右斜线
//        for (int i = 1; x - i >= 1 && y + i <= n; i++) {
//            if (st[x - i][y + i] == 1) {
//                return false;
//            }
//        }
//        return true;
//    }
//
//    public static void dfs(int u) {
//        if (u > n) {
//            if (count < 3) {
//                print();
//            }
//            count++;
//            return;
//        }
//
//
//        for (int i = 1; i <= n; i++) {
//            if (st[u][i] == 0 && check(u, i)) {
//                st[u][i] = 1;
//                dfs(u + 1);
//                st[u][i] = 0; //回溯
//            }
//        }
//    }
//}
//
//import java.io.*;
//class Read {
//    StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
//    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//
//    public int nextInt() throws IOException {
//        st.nextToken();
//        return (int) st.nval;
//    }
//
//    public long nextLong() throws IOException {
//        st.nextToken();
//        return (long) st.nval;
//    }
//
//    public double nextDouble() throws IOException {
//        st.nextToken();
//        return st.nval;
//    }
//
//    public String nextLine() throws IOException {
//        return br.readLine();
//    }
//}
//
//public class Main {
//    static int n, count;
//    static int[][] st;
//    static int[] lie;
//    static int[] z;
//    static int[] y;
//
//    static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
//
//    public static void main(String[] args) throws IOException {
//        Read read = new Read();
//        n = read.nextInt();
//        st = new int[n + 1][n + 1];
//        lie = new int[n+1];
//        z = new int[n+1];
//        y = new int[n+1];
//        count = 0;
//        dfs(1);
//        out.println(count);
//        out.flush();
//    }
//
//    public static void print() {
//        for (int i = 1; i <= n; i++) {
//            for (int j = 1; j <= n; j++) {
//                if (st[i][j] == 1) {
//                    out.print(j + " ");
//                    out.flush();
//                }
//            }
//        }
//        out.println();
//        out.flush();
//    }
//
//    public static void dfs(int u) {
//        if (u > n) {
//            if (count < 3) {
//                print();
//            }
//            count++;
//            return;
//        }
//
//
//        for (int i = 1; i <= n; i++) {
//            if (st[u][i] == 0 && lie[i] == 0 && z[i] == 0 && y[i] == 0) {
//                st[u][i] = 1;
//                lie[i] = 1;
//                y[i] = 1;
//                z[i] = 1;
//                dfs(u + 1);
//                st[u][i] = 0; //回溯
//                lie[i] = 0;
//                y[i] = 0;
//                z[i] = 0;
//            }
//        }
//    }
//}
//



import java.io.*;
import java.util.Scanner;

class Read {
    StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    public int nextInt() throws IOException {
        st.nextToken();
        return (int) st.nval;
    }

    public long nextLong() throws IOException {
        st.nextToken();
        return (long) st.nval;
    }

    public double nextDouble() throws IOException {
        st.nextToken();
        return st.nval;
    }

    public String nextLine() throws IOException {
        return br.readLine();
    }
}

public class Main {
    static int n,m,t;
    static int sx,sy, fx,fy;
    static int[][] map;
    static int count;
    static int[] xx = {1,-1,0,0};
    static int[] yy = {0,0,1,-1};
    public static void main(String[] args) throws IOException {
        Scanner read = new Scanner(System.in);
        n = read.nextInt();
        m = read.nextInt();
        t = read.nextInt();
        sx = read.nextInt();
        sy = read.nextInt();
        fx = read.nextInt();
        fy = read.nextInt();
        map = new int[n+1][m+1];
        for(int i = 0; i < t; i++) {
            int a = read.nextInt();
            int b = read.nextInt();
            map[a][b] = 2;
        }
        map[sx][sy] = 1;
        count = 0;
        dfs(sx,sy);
        System.out.println(count);
    }

    public static void dfs(int sx, int sy) {
        if(sx == fx && sy == fy) {
            count++;
            return;
        }

        for(int i = 0; i<4; i++) {
            int x = sx + xx[i];
            int y = sy + yy[i];
            if(x>=1 && x<=n && y>=1 && y<=n && map[x][y] == 0) {
                map[x][y] = 1;
                dfs(x,y);
                map[x][y] = 0;
            }
        }
    }
}